package com.ct.controller;

import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.LineCaptcha;
import cn.hutool.core.lang.Console;
import cn.hutool.core.lang.Dict;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;


/**
 * 验证码
 */
@RestController
@RequestMapping("/captcha")
public class CaptchaController {
    /**
     * 生成验证码
     */
    @GetMapping("/getCaptChaController")
    public void getCaptChaController(HttpServletResponse response) {
        // 定义图形验证码的宽和高
        LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100, 4, 20);

        // 获取验证码的内容
        String code = lineCaptcha.getCode();
        Console.log("验证码:{} ", code); // 输出验证码到控制台（用于调试）

        // 设置响应类型为图片
        response.setContentType("image/png");

        // 使用 try-with-resources 确保输出流自动关闭
        try (OutputStream out = response.getOutputStream()) {
            // 将验证码图片写入响应输出流
            lineCaptcha.write(out);
        } catch (IOException e) {
            // 处理异常情况，例如日志记录或响应错误信息
            System.err.println("验证码生成失败: " + e.getMessage());
            response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
        }
    }

    /**
     * 传入什么返回什么
     */
    @GetMapping("/to")
    public Map getCaptChaController(String param) {
        return Dict.create()
                .set("key1", param)//int
                .set("key2", param);//long
    }
}
